#include <REGX52.H>
#include "Delay.h"

/**
  * @brief  矩阵键盘读取按键键码
  * @param  无 
  * @retval KeyNumber 按下按键的键码值
	如果按键按下不放，程序会停留在子函数，松手时返回键码
  */

unsigned char MatrixKey()
{
	//按列扫描
	unsigned char KeyNumber = 0;//返回值
	
	P1 = 0xFF;//先默认高电平
	P1_3 = 0;//先让P13（第一列）为0；
	//此时第一列P1_3为0，当P17~P14按下时变零，分别赋值
	if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=1;}
	else if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=5;}
	else if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=9;}
	else if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=13;}
	
	P1 = 0xFF;//先默认高电平
	P1_2 = 0;//先让P12（第二列）为0；
	if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=2;}
	else if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=6;}
	else if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=10;}
	else if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=14;}	
	
	P1 = 0xFF;//先默认高电平
	P1_1 = 0;//先让P11（第三列）为0；
	if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=3;}
	else if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=7;}
	else if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=11;}
	else if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=15;}	
	
	P1 = 0xFF;//先默认高电平
	P1_0 = 0;//先让P10（第四列）为0；
	if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=4;}
	else if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=8;}
	else if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=12;}
	else if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=16;}
	
	return KeyNumber;
}